// go语言Map集合 - 一种无序的键值对的集合。
package main

import "fmt"

/**
 * 定义Map：可以使用内建函数 make 或使用 map 关键字来定义 Map:
 * 使用 make 函数 map_variable := make(map[KeyType]ValueType, initialCapacity)
 */
func t1() {
	m1 := make(map[string]int)
	m2 := make(map[string]int, 10)
	fmt.Println(m1, m2)

	m3 := map[string]int{
		"apple":  1,
		"banana": 2,
		"orange": 3,
	}
	fmt.Println(m3)
}

func t2() {
	// 创建集合
	var siteMap map[string]string
	siteMap = make(map[string]string)
	// 插值
	siteMap["google"] = "谷歌"
	siteMap["runoob"] = "菜鸟教程"
	siteMap["baidu"] = "百度"
	siteMap["wiki"] = "维基百科"
	for site := range siteMap {
		fmt.Println(site, "首都是:", siteMap[site])
	}

	// 查看元素是否存在
	name, ok := siteMap["facebook"]
	if ok {
		fmt.Println("facebook的站点是:", name)
	} else {
		fmt.Println("facebook站点不存在")
	}
}

/**
 * delete()函数
 */
func t3() {
	countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New Delhi"}
	fmt.Println("原始地图")
	// 打印
	for country := range countryCapitalMap {
		fmt.Println(country, "首都是:", countryCapitalMap[country])
	}
	// 删除元素
	delete(countryCapitalMap, "France")
	fmt.Println("删除元素后地图")
	for country := range countryCapitalMap {
		fmt.Println(country, "首都是:", countryCapitalMap[country])
	}
}

func main() {
	t1()
	t2()
	t3()
}
